计网网络篇
1. 公钥和私钥
公钥和私钥是通过一种算法得到的一个密钥对,公钥是秘钥对中公开的部分,私钥是非公开的部分。如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
原则:公钥公开,私钥只有自己拥有。
2. 对称加密与非对称加密
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;
非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
总结一下:通过非对称加密的方式把秘钥发送过去,接下来用这个秘钥一直进行对称加密。
即:第一次通信采用非对称加密,接下来的通信采用对称加密
3. HTTP的相关问题
3.1 HTTP概念
HTTP协议:超文本传输协议。是应用层协议,是基于TCP协议的,明文传输,客户端与服务器端都无法验证对方的身份;
超文本:广义上的文本,包括图片、视频、压缩包、超链接等。
3.2 HTTP的特点
1、简单、灵活:HTTP头部的各类字段组成都没有固定要求,允许开发人员自定义和补充。
2、无状态:服务器不会记录HTTP的状态,减轻了服务器的开销。 但是在完成关联性操作时不方便(如玩4399小游戏,不能换一个游戏就重新登一次账户)
解决办法:使用Cookie技术,通过在请求和响应报文中写入Cookie信息来来控制客户端的状态。
当客户端第一次请求后,服务器会下发一个装有客户信息的Cookie,后续客户端请求服务器时,带上Cookie,服务器就能识别出是谁。
3、不安全
HTTP传输文本时采用明文传输,不加密,可以直接看见信息。
通信时不会验证双方身份,可能访问虚假用户
传输过程中的报文可能遭到无疑篡改。
3.3 HTTP的状态码
写法 类别 解释
1xx Information(信息状态码) 接受的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要进行附加操作以完成请求
4xx Client Error(客户端错误状态码) 服务器无法处理请求
5xx Server Error(服务端错误状态码) 服务器处理请求出错
4. HTTPS相关问题
- HTTPS概念
HTTPS协议是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
- HTTPS为什么安全?
1、混合加密
作用:防窃听
混合加密:即同时采用公钥和私钥加密,更安全,更高效,更不易被破解。 具体操作方法见问本文章的第一个问题。
HTTPS采用对称加密和非对称加密结合的混合加密方式
在通信建立前采用非对称加密的方式交换秘钥,后续就不在使用非对称加密
在通信过程中全部使用对称加密的会话秘钥方式,加密明文数据。
2. 摘要算法
作用:防止数据被篡改。
摘要算法:实现数据完整性,能够为数据生成独一无二的指纹,指纹用于校验数据的完整性,解决了被篡改的风险。
过程
1、客户端发送明文前,会通过摘要算法算出明文的指纹,发送时明文和指纹一同加密,发送给服务器。
2、服务器解密后,用相同的摘要算法算出发送过来的明文,通过比较客户端携带的指纹和当前指纹做比较,若相同,则说明数据是完整的。
- 数字证书
作用:解决身份认证问题。
过程:借助第三方权威机构CA(数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构办法)中,只要证书是可信的,公钥就是可信的。
- 采用HTTPS加密的具体流程:
假设电脑A要向电脑B发送数据
电脑A发送数据前,先通过摘要算法计算出明文的指纹,然后将明文+指纹打包成数据包,并将自己的对称加密的秘钥放入数据报, 同时向电脑B索要公钥。
电脑B将公钥发送过来后,电脑A采用非对称加密的方式,通过电脑B的公钥将自己的数据包加密(非对称加密的原理见之前的解答),加密后,发送给电脑B
电脑B收到电脑A发送过来的数据包后,发现是非对称加密的方式,于是使用自己的私钥解密, 解密后通过计算该数据包的指纹, 与数据包内指纹对比, 若指纹相同,则表示数据没有丢失。
接下来的通信,双方都将使用数据包内的秘钥以对称加密的方式通信。
5. HTTP与HTTPS区别
端口不同:HTTP与HTTPS使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
资源消耗:和HTTP通信相比,HTTPS通信会由于加减密处理消耗更多的CPU和内存资源;
开销:HTTPS通信需要证书,而证书一般需要向认证机构购买;
6. 客户端在使用HTTPS方式与Web服务器通信时的步骤
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。